'use strict'

import { app, protocol, BrowserWindow,ipcMain } from 'electron'
import { createProtocol } from 'vue-cli-plugin-electron-builder/lib'
import installExtension, { VUEJS_DEVTOOLS } from 'electron-devtools-installer'
const isDevelopment = process.env.NODE_ENV !== 'production'

// Scheme must be registered before the app is ready
protocol.registerSchemesAsPrivileged([
  { scheme: 'app', privileges: { secure: true, standard: true } }
])

async function createWindow() {
  // Create the browser window.
  const win = new BrowserWindow({
    // width: 1920,
    // height: 1080,
    width: 2920,
    height: 1080,
    frame: false, // 隐藏窗口边框和标题栏  

    //网页功能
    webPreferences:{
      //开启调试
      devTools: true,
      //是否启动node
      nodeIntegration: true,
      enableRemoteModule:true,
      //是否在独立 JavaScript 环境中运行 Electron API和指定的preload 脚本
      contextIsolation: false,
      webviewTag:true,
      // preload:'public/preload.js'
  },
    icon: 'build/icons/fylogo256.ico',
    // fullscreenable:true,
    // fullscreen: true,
    // simpleFullscreen:true,
    // webPreferences: {
      
    //   // Use pluginOptions.nodeIntegration, leave this alone
    //   // See nklayman.github.io/vue-cli-plugin-electron-builder/guide/security.html#node-integration for more info
    //   nodeIntegration: process.env.ELECTRON_NODE_INTEGRATION,
    //   contextIsolation: !process.env.ELECTRON_NODE_INTEGRATION
    // }
  })
  win.setMenu(null)
   // 监听窗口关闭事件
   ipcMain.on('close', () => {
    win.close()
    
  })

  // 1. 窗口 最小化
ipcMain.on('min',function(){ // 收到渲染进程的窗口最小化操作的通知，并调用窗口最小化函数，执行该操作
  win.minimize();
})

// 2. 窗口 最大化、恢复
ipcMain.on('max',function () {
  // if(win.isMaximized()){ // 为true表示窗口已最大化
  //   win.restore();// 将窗口恢复为之前的状态.
  // }else{
  //   win.maximize();
  // }


  if (win.isFullScreen()) {
    win.setFullScreen(false); // 退出全屏模式  
  }else{
    win.setFullScreen(true); // 进入全屏模式  
  }
 
})



  if (process.env.WEBPACK_DEV_SERVER_URL) {
    // Load the url of the dev server if in development mode
    await win.loadURL(process.env.WEBPACK_DEV_SERVER_URL)
    if (!process.env.IS_TEST) win.webContents.openDevTools()
  } else {
    createProtocol('app')
    // Load the index.html when not in development
    win.loadURL('app://./index.html')
  }
}

// Quit when all windows are closed.
app.on('window-all-closed', () => {
  // On macOS it is common for applications and their menu bar
  // to stay active until the user quits explicitly with Cmd + Q
  if (process.platform !== 'darwin') {
    app.quit()
  }
})

app.on('activate', () => {
  // On macOS it's common to re-create a window in the app when the
  // dock icon is clicked and there are no other windows open.
  if (BrowserWindow.getAllWindows().length === 0) createWindow()
})

// This method will be called when Electron has finished
// initialization and is ready to create browser windows.
// Some APIs can only be used after this event occurs.
app.on('ready', async () => {
  if (isDevelopment && !process.env.IS_TEST) {
    // Install Vue Devtools
    try {
      await installExtension(VUEJS_DEVTOOLS)
    } catch (e) {
      console.error('Vue Devtools failed to install:', e.toString())
    }
  }
  createWindow()
})

// ipcMain.handle('enter-full-screen', () => {  
//   win.setFullScreen(true); // 进入全屏模式  
// });


// ipcMain.handle('exit-full-screen', () => {  
//   win.setFullScreen(false); // 退出全屏模式  
// });

// ipcMain.on( 'min', e=> win .minimize() )
// ipcMain.on( 'max' , ()=>{
// 	if( win.isMaximized()){  //判断窗口是否最大化
// 		win.restore()    //将窗口恢复为之前的状态
// 	}else{
// 		win.maximize()   //将窗口全屏
// 	}
// } )

// // 监听窗口关闭事件
// ipcMain.on('close', () => {
//   win.close()
// })
// 顺便这里放一个主进程的监听
// ipcMain.on('pong', (e, args) => {
//   console.log('这里是主进程pong', args)
//   e.sender.send('ping', '你好 我是主进程')
// })

// Exit cleanly on request from parent process in development mode.
if (isDevelopment) {
  if (process.platform === 'win32') {
    process.on('message', (data) => {
      if (data === 'graceful-exit') {
        app.quit()
      }
    })
  } else {
    process.on('SIGTERM', () => {
      app.quit()
    })
  }
}
